---
title: "Livecoding da(o)(e) MateBot, Robô Social (3)"
date: 2020-09-02T01:17:51-03:00
---


## Objetivos de hoje:

- [x] Acrescentar issues novas no Github
- [x] Continuar desenvolvendo o código base do Aiogram
- [x] Documentar o processo

---

## Bibliografia (linkania):

* <https://soundcloud.com/lfzawacki/sets/stream-list>  
* <https://github.com/matehackers/matebot>  
* <https://github.com/aiogram/aiogram>  
* <https://t.me/joinchat/CwFUFkf-dKW34FPBjEJs9Q>  
* <https://docs.aiogram.dev/>  

---

## Transmissão ao vivo

Começou pouco após à meia noite BRT (UTC -3) do dia 02 de setembro de 2020 (quarta-feira já).  

Ao vivo no Youtube no canal do Matehackers: <https://www.youtube.com/c/Exmachinae/live>  

Salvo no Youtube:  

* <https://youtube.com/watch?v=WZVxOrKisq0>  
* <https://youtube.com/watch?v=EM_oYVM7bMo>  

**Terça Sem Fim - Livecoding da(o)(e) MateBot, Robô Social**  

> MateBot é atualmente um(a)(e)(?) robô de Telegram que está sendo escrito usando Python e Aiogram com licença de software livre. Esta série de vídeos serve para documentar e acompanhar o processo de desenvolvimento. Além do canal do Youtube do Matehackers, também está sendo documentado no repositório git público e no blog Terça Sem Fim. Estes vídeos estão disponíveis via IPFS e Tor pra quem não consegue assistir pelo Youtube.

Código fonte: https://github.com/matehackers/matebot  

Blog da Terça Sem Fim:
🌐 Web:
- https://denise.matehackers.org/tercasemfim/  
🧅 Tor:
- http://ftkbuej5ggf45o5n37evqj6qhxjobrz7lyqvdz22z3me6yyuepmhgcad.onion/ (atualizado durante a transmissão ao vivo)  
- http://gytdkc5fei2ow5s7hdrppbin4rlogqzqhbabvvra2qb3flccuxsnrdqd.onion/tercasemfim/ (atualizado após a transmissão ao vivo)  
🌌 IPFS:
- https://ipfs.io/ipns/denise.matehackers.org/tercasemfim/  

Grupo do Matehackers no Telegram: <https://t.me/matehackerspoa>  
Grupo do MateBot no Telegram: <https://t.me/joinchat/CwFUFkf-dKW34FPBjEJs9Q>  
Meu usuário no Telegram: <https://t.me/desobedientecivil>  

Ajude o Hackerspace Matehackers a se manter: <https://matehackers.org/renda>  

`#Python #Telegram #Aiogram #Geany #Flask #Quart #PythonTelegramBot #DataScience #IA #AI #ML #DS`  

---

## Desenvolvimento

### Documentando o processo

Como sempre a primeira coisa é alimentar o blog dessa vez sem o tor porque eu estou usando o Qubes e não configurei um serviço oculto na VM do Whonix.  

### Github novas issues

Durante a semana foram se acumulando feedbacks e novas ideias para o bot que devem ser documentadas no [repositório git](https://github.com/matehackers/matebot).  

Às 01:18 BRT terminei de colocar todas as issues do mês de agosto no github. Foram três no total, da 64 até a 66.  

Esclareci duas vezes que eu parei de usar Flask e Quart para o desenvolvimento e voltei a usar "python puro (tm)" pra desenvolver o bot como era no tempo do telepot.  

Esclareci que os próximos passos serão continuar desenvolvendo o bot usando [Aiogram](https://github.com/aiogram/aiogram) e python-telegram-bot, sendo o foco maior em Aiogram.  

Coisas para curto prazo que devem ser feitas é refazer todo o plugin de logging (que já estava parcialmente desenvolvido com python-telegram-bot), fazer um controle de acesso (que já tinha em telepot), escrever um controle de flood (que ninguém escreveu, nem no telepot, nem no ptb, nem no aiogram, nem no telethon, etc.) e finalmente migrar os plugins todos no mínimo para funcionar com aiogram mas preferencialmente pra funcionar com python-telegram-bot também.  

### Geany

Às 01:30 BRT terminei de escrever o blog e voltei para o desenvolvimento.  

Perdi bastante tempo (de novo) tentando usar **json.dumps()** com as updates.  

Cheguei a testar o método de copiar mensagem do aiogram, mas por fim consegui fazer logging em grupos escrevendo meus próprios métodos e adicionando uma linha em cada handler de mensagem.  

Lancei uma versão estável do matebot que é a **v0.1.3.1**. O próximo passo é passar todos os plugins já existentes para usar aiogram.  

Uma coisa engraçada é que eu fiz uma cacaca no repositório ao vivo. Ao invés de fazer merge da branch _main_ na branch _async_, eu fiz o contrário. Depois tive que adicionar vários commits de merge para retomar o código ao estado que estava, mas não estava mais transmitindo no vídeo.  

---

## Encerramento

Transmissão foi encerrada aproximadamente às 04:45 BRT de 02 de Setembro de 2020.  

> Não curtam o vídeo, não sigam o canal, não se inscrevam para receber notificações. Usem youtube-dl para obter o vídeo, assistam no VLC. Ou melhor, assistam o vídeo via IPFS.  

---

## Pós transmissão

Consegui resolver o problema dos arquivos de configuração. Descobri o método `Dispatcher.get_current()` que retorna o _dispatcher_ do contexto do método. Então não preciso importar o **Bot()** em cada arquivo do código. [Commit com esta correção](https://github.com/matehackers/matebot/commit/e094cdd66bd1e82840cab8211ae4afcc89afc02b). Na [documentação do aiogram](https://docs.aiogram.dev) não tinha essa informação, eu abri [uma issue no repositório](https://github.com/aiogram/aiogram/issues/412) para isto.  

Consegui resolver o problema do pretty print para as updates. O objeto [TelegramObject](https://docs.aiogram.dev/en/latest/telegram/types/base.html#telegramobject) que é base para os outros objetos tem os métodos **[to_python()](https://docs.aiogram.dev/en/latest/telegram/types/base.html#aiogram.types.base.TelegramObject.to_python)** e **[as_json()](https://docs.aiogram.dev/en/latest/telegram/types/base.html#aiogram.types.base.TelegramObject.as_json)** que eu consegui usar pra formatar os updates nos logs. [Commit com esta alteração](https://github.com/matehackers/matebot/commit/146865583f863adde28d235532a69faf204154c5).  

